package com.pro.servlet;

import com.pro.pojo.VerifyCode;

import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;

/**
 * @Author 祖铭泽
 * @Date 2021/12/17/0017
 * @description
 */
public class YanzhengServlet {
    private static final long serialVersionUID = 1L;

    public YanzhengServlet() {
        super();
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        /**
         * 验证码
         */
        try {
            System.out.println("验证码");
            int width = 200;
            int height = 69;
            BufferedImage verifyImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
            // 生成对应宽高的不带透明色初始图片
            String randomText = VerifyCode.drawRandomText(width, height, verifyImg);
            // 单独的一个类方法，出于代码复用考虑，进行了封装。
            // 功能是生成验证码字符并加上噪点，干扰线，返回值为验证码字符
            request.getSession().setAttribute("verifyCode", randomText);
            response.setContentType("image/png");// 必须设置响应内容类型为图片，否则前台不识别
            OutputStream os = response.getOutputStream(); // 获取文件输出流
            ImageIO.write(verifyImg, "png", os);// 输出图片流
            os.flush();
            os.close();// 关闭流

        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}
